#ifndef AI_SERVICE_STUB_H
#define AI_SERVICE_STUB_H

#include <map>
#include "iremote_stub.h"
#include "refbase.h"
#include "i_ai_service.h"
#include "nocopyable.h"

namespace OHOS {
namespace AIS {
    class AIServiceStub : public IRemoteStub<IAIService> {
public:
    AIServiceStub();

    virtual ~AIServiceStub();

    int32_t OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel &reply, MessageOption &option) override;

private:
    int32_t InitStub(MessageParcel &data, MessageParcel &reply);

    int32_t ProcessStub(MessageParcel &data, MessageParcel &reply);

    int32_t DeInitStub(MessageParcel &data, MessageParcel &reply);

    DISALLOW_COPY_AND_MOVE(AIServiceStub);
    using AIServiceBaseFunc = int32_t (AIServiceStub::*)(MessageParcel &data, MessageParcel &reply);
    std::map<uint32_t, AIServiceBaseFunc> baseFuncs_;

};
} // namespace AIS
} // namespace OHOS

#endif // AI_SERVICE_STUB_H